$(function() {
	/* 下拉选择院系加载后台信息 */
    $("#sele_dept").selectpicker({  
        noneSelectedText : '请选择院系'  
        });
    // 下拉数据加载
    $.ajax({
        type : 'get',  
        url :"dept/findList",  
        dataType : 'json',  
        success : function(datas) {// 返回list数据并循环获取
            var select = $("#sele_dept");  
            for (var i = 0; i < datas.length; i++) {  
                select.append("<option value='"+datas[i].id+"'>"  
                        + datas[i].name + "</option>");  
            }
            $('#sele_dept').selectpicker('refresh');
            $('#sele_dept').selectpicker('val', '');
        }  
    });
    /* 院系查找筛选信息 */
    $("#search_dept").selectpicker({  
        noneSelectedText : '选择院系查找'  
        });
    // 下拉数据加载
    $.ajax({
        type : 'get',  
        url :"dept/findList",  
        dataType : 'json',  
        success : function(datas) {// 返回list数据并循环获取
            var select = $("#search_dept");  
            for (var i = 0; i < datas.length; i++) {  
                select.append("<option value='"+datas[i].id+"'>"  
                        + datas[i].name + "</option>");  
            }
            $('#search_dept').selectpicker('refresh');
            $('#search_dept').selectpicker('val', '');
        }  
    });
    /* 科目查找筛选信息 */
    $("#search_subject").selectpicker({  
        noneSelectedText : '选择科目查找'  
        });
    // 下拉数据加载
    $.ajax({
        type : 'get',  
        url :"subject/findAll",  
        dataType : 'json',  
        success : function(datas) {// 返回list数据并循环获取
            var select = $("#search_subject");  
            for (var i = 0; i < datas.length; i++) {  
                select.append("<option value='"+datas[i].id+"'>"  
                        + datas[i].name + "</option>");  
            }
            $('#search_subject').selectpicker('refresh');
            $('#search_subject').selectpicker('val', '');
        }  
    });
    
    //initSubjectList()初始化subject列表
    initSubjectList();
});
// 加载表格
$('#teacherList').bootstrapTable({
	url:'teacher/findPage', // 服务器数据的加载地址
	method: 'get',  
    dataType: "json",  
    striped: true,// 设置为 true 会有隔行变色效果
    undefinedText: "空",// 当数据为 undefined 时显示的字符
    pagination: true, // 分页
    toolbar: '#toolbar',
   // paginationLoop:true,//设置为 true 启用分页条无限循环的功能。
    // showToggle: "true",//是否显示 切换试图（table/card）按钮
    // showColumns: "true",//是否显示 内容列下拉框
    showRefresh: true,// 是否显示刷新按钮
    pageNumber: 1,// 如果设置了分页，首页页码
    // showPaginationSwitch:true,//是否显示 数据条数选择框
    pageSize: 12,// 如果设置了分页，页面数据条数
    // pageList: [5, 10, 20, 40], //如果设置了分页，设置可供选择的页面数据条数。设置为All 则显示所有记录。
    paginationPreText: '‹',// 指定分页条中上一页按钮的图标或文字,这里是<
    paginationNextText: '›',// 指定分页条中下一页按钮的图标或文字,这里是>
    //singleSelect: false,//设置True 将禁止多选
    // search: true, //显示搜索框
    data_local: "zh-US",// 表格汉化
    sidePagination: "server", // 服务端处理分页
    queryParams: function (params) {// 自定义参数，这里的参数是传给后台的，我这是是分页用的
    	var str = $('input[name="search"]').val();
    	var dept_id = $('#search_dept option:selected').val();
    	var subject_id = $('#search_subject option:selected').val();
        return{
        	dept_id:dept_id,
        	subject_id:subject_id,
        	str:str,
			page:(params.offset)/(params.limit)+1,// 页码
            limit: params.limit, // 找多少条
            sort:params.sort,// 排序列名
            dir:params.order// 排序方式desc,asc
        };
    },
    idField: "id",// 指定主键列
    columns: [{
        field: 'id',  
        title: 'ID',
        /* visible:false */
    }, {  
        field: 'num',  
        title: '教工号'
    }, {  
        field: 'name',
        title: '姓名'
    }, {  
        field: 'sex',
        title: '性别'
    }, {  
        field: 'department',
        title: '院系',
        formatter : function(value,row,index){
        	if(null!=row.department)
        		return row.department.name;
        }
    }, {
    	field: 'subjs',
        title: '科目',
        formatter : function(value,row,index){
        	var subject = "";
        	for(var i=0;i<row.subjs.length;i++){
        		subject += row.subjs[i].name;
        		if(i!=row.subjs.length-1)subject += ',';
        	}
        	return subject;
        }
    }, {
    	field: 'revoked',
        title: '状态',
        formatter : function(value,row,index){
        	if(row.revoked)return '<a class="activate btn btn-default btn-xs" title="edit">已注销</a>';
        	else{
        		return '<a class="revoked btn btn-success btn-xs" title="edit">正常</a>';
        	}
        },
        events:{
			'click .activate':function(e, value, row, index){
				//激活用户
	        	$.ajax({
	        		type:'POST',
	        		url:'teacher/activate',
	        		data:{id:row.id},
	        		dataType:'json',
	        		success:function(data){
	        			Modal.alert({msg:data.msg});
	        			if(data.success){
	        				$('#teacherList').bootstrapTable('refresh');
	        			}
	        		},
	        		error:function(){
	        			Modal.alert({msg:'出错！'});
	        		}
	        	});
			},
			'click .revoked':function(e, value, row, index){
				//注销用户
				Modal.confirm(
					    {
					        msg: "确定要注销该教师用户？"
					    })
					    .on( function (e) {
					        if(e){
					        	$.ajax({
					        		type:'POST',
					        		url:'teacher/revoked',
					        		data:{id:row.id},
					        		dataType:'json',
					        		success:function(data){
					        			Modal.alert({msg:data.msg});
					        			if(data.success){
					        				$('#teacherList').bootstrapTable('refresh');
					        			}
					        			
					        		},
					        		error:function(){
					        			Modal.alert({msg:'出错！'});
					        		}
					        	});
					        }
					    });
			}
        }
    }, {
        title: '操作',
        formatter : function(value,row,index){
        	var r = '<a class="edit btn btn-info btn-xs fa fa-pencil" title="edit"></a>&nbsp;';
        	return r;
        },
		events:{
			'click .edit':function(e, value, row, index){
				/*private Long id;
				private String num;
				private String name;
				private String sex;
				private Department department;
				private List<Subject> subjs = new ArrayList<Subject>();
				private String password;
				private boolean revoked;*/
				$('input[name="password"]').attr('type','password');
				$('input[name="password"]').attr('disabled',true);
				$('#form1 :input[name="num"]').val(row.num);
				$('#form1 :input[name="id"]').val(row.id);
				$('#form1 :input[name="revoked"]').val(row.revoked);
				$('#form1 :input[name="name"]').val(row.name);
				$('#form1 :input[name="password"]').val(row.password);
				
				//去除自动生成密码
				$('input[name="num"]').removeAttr('onkeyup');
				
				$('input[name="sex"][value="'+row.sex+'"]').prop('checked',true);
				
				for(var i=0;i<row.subjs.length;i++){
					$('input[name="subjectId"][value="'+row.subjs[i].id+'"]').prop('checked',true);
				}
				
				$('#sele_dept').selectpicker('val', row.department.id);
				
				$('#myModal').modal('show');
			}
		}
    }]
      
});
/* 信息提交 */
$("#form1").submit(function(event){
	var id = $('input[name="id"]').val();
	var num = $('input[name="num"]').val();
	var name = $('input[name="name"]').val();
	var sex = $('input[name="sex"]:checked').val();
	var deptId = $('#sele_dept option:selected').val();
	var subjects = new Array();
    $('input[name="subjectId"]:checked').each(function(i){
    	var subjId = $(this).val();
    	subjects[i] = {'id':subjId};
    });
    var password = $('input[name="password"]').val();
    var revoked = $('input[name="revoked"]').val();
    
    var data = {
    		'id':id,
    		'num':num,
    		'name':name,
    		'department':{
    			'id':deptId
    		},
    		'password':password,
    		'sex':sex,
    		'subjs':subjects
    		};
    console.log(JSON.stringify(data));
    var result = JSON.stringify(data);
    $.ajax({
    	url:'teacher/saveOrUpdate',
    	type:'post',
    	dataType:'json',
    	data:{teacher:result},
    	success:function(data){
    		Modal.alert({msg:data.msg});
    		if(data.success){
    			$('#search_dept').selectpicker('val', '');
    			$('#search_subject').selectpicker('val', '');
    			$('input[name="search"]').val('');
    			$('#teacherList').bootstrapTable('refresh');
    			$('#myModal').modal('hide');
    		}
    	},
    	error:function(){
    		Modal.alert({msg:'出错!'});
    	}
    });
	return false;
});
function cbrequired(obj){
	//复选框非空
	if($('input[name="'+$(obj).attr("name")+'"]:checked').length<=0){
		$($('input[name="'+$(obj).attr("name")+'"]')[0]).prop('required','required');
	}else{
		$('input[name="'+$(obj).attr("name")+'"]').removeProp('required');
	}
}
function buildPwd(obj){
	//自动生成密码
	var pwd = $(obj).val();
	$('input[name="password"]').val(pwd);
}
function resetSearch(){
	$('#search_dept').selectpicker('val', '');
	$('#search_subject').selectpicker('val', '');
	$('input[name="search"]').val('');
	$('#teacherList').bootstrapTable('refresh');
}
function search(){
	$('#teacherList').bootstrapTable('refresh');
}
function initSubjectList(){
	$.ajax({
		url:'subject/findAll',
		type:'post',
		dataType:'json',
		success:function(data){
			var html = "";
			for(var i=0;i<data.length;i++){
				if(i==0)
					html += '<label class="col-xs-3"><input onchange="cbrequired(this)" required="required" type="checkbox" name="subjectId" value='+data[i].id+'>'+data[i].name+'</label>';
				else
					html += '<label class="col-xs-3"><input onchange="cbrequired(this)" type="checkbox" name="subjectId" value='+data[i].id+'>'+data[i].name+'</label>';
			}
			$('#subjectList').html(html);
		}
	});
}
$('#myModal').on('show.bs.modal', function () {
	// 打开modal执行一些动作...
});
$('#myModal').on('hide.bs.modal', function () {
	// 关闭modal执行一些动作...初始化modal
	$('#form1')[0].reset();
	$('input[name="password"]').attr('type','text');
	$('input[name="password"]').attr('disabled',false);
	$('#sele_dept').selectpicker('val', '');
	//添加生成密码函数
	$('input[name="num"]').attr('onkeyup','buildPwd(this)');
});